import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";


import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";

import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";

const pathSrc = resolve(__dirname, "src");

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ["vue"],
      eslintrc: {
        enabled: false, // 是否自动生成 eslint 规则，建议生成之后设置 false
        filepath: "./.eslintrc-auto-import.json", // 指定自动导入函数 eslint 规则的文件
        globalsPropValue: true,
      },
      resolvers: [
        // 自动导入 Element Plus 相关函数，如：Element Plus 相关函数，如：ElMessage, ElMessageBox...(带样式)
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({}),
      ],
      vueTemplate: true, // 是否在 vue 模板中自动导入
      dts: resolve(pathSrc, "types", "auto-imports.d.ts"), // 指定自动导入函数TS类型声明文件类型
    }),
    Components({
      resolvers: [
        // 自动导入 Element Plus 组件
        ElementPlusResolver(),
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ["ep"], // element-plus图标库，其他图标库 https://icon-sets.iconify.design/
        }),
      ],
      dts: resolve(pathSrc, "types", "components.d.ts"), // 指定自动导入组件TS类型声明文件路径
    }),
    Icons({
      // 自动安装图标库
      autoInstall: true,
    }),
  ],
  resolve: {
    alias: {
      "@": pathSrc,
    },
  },
  css: {
    // css预处理器
    preprocessorOptions: {
      scss: {
        // 允许在scss文件中使用javaScript 表达式
        javascriptEnabled: true,
        // 会在每个scss文件的开头自动插入，作用是引入全局的SCSS变量文件，并将其所有变量和混入暴露出来，可以直接使用而无需再次导入
        additionalData: `@use "@/styles/variables.scss" as *;`,
      },
    },
  },
  // server: {
  //   host: "0.0.0.0",
  //   port: Number(process.env.VITE_APP_PORT),
  //   open: true, //运行是否自动打开浏览器
  //   // 反向代理解决跨域
  //   // proxy: {
  //   //   [process.env.VITE_APP_BASE_API?.toString()]: {
        
  //   //   }
  //   // }
  // }
});
